/**
 * 项目名：	Rumba Plan
 * 
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2007，所有权利保留。
 * 
 * 文件名：	QueryResultFilter.java
 * 模块说明：	
 * 修改历史：
 * May 16, 2007 - zhangyanbo - 创建。
 */
package com.hd123.rumba.action.qt;

import java.util.Date;

import com.hd123.rumba.request.JspLib;
import com.hd123.rumba.runtime.FormatSettings;

/**
 * 查询结果筛选对象。
 * 
 * @author zhangyanbo
 * 
 */
public class QueryResultFilter {

  /** 用户代码类似于 */
  private String userCodeLike;
  /** 查询名称类似于 */
  private String qdNameLike;
  /** 执行状态等于 */
  private String state;
  /** 开始时间从 */
  private Date startTimeFrom;
  /** 开始时间到 */
  private Date startTimeTo;

  public String toJSForRQuery(String qryName, String alias) throws Exception {
    StringBuffer sb = new StringBuffer();
    sb.append("var sce = new RSCE();\n");
    sb.append("sce.operator = RSCE.VALUE_OPERATOR_AND;\n");

    if (userCodeLike != null)
      sb.append("sce.append(RSCE.cond('u.login like ?', '" + userCodeLike + "', RSCE.WC_BOTH));\n");
    if (qdNameLike != null)
      sb.append("sce.append(RSCE.cond('" + alias + ".qdName like ?', '" + qdNameLike
          + "', RSCE.WC_BOTH));\n");
    if ("已完成".equals(state))
      sb.append("sce.append(RSCE.cond('" + alias + ".resultCount != -1'));\n");
    else if ("执行中".equals(state))
      sb.append("sce.append(RSCE.cond('" + alias + ".resultCount = -1'));\n");
    if (startTimeFrom != null) {
      sb.append("var d1 = parseDate('" + JspLib.format(startTimeFrom, FormatSettings.SDFyMdHms)
          + "');");
      sb.append("sce.append(RSCE.cond('" + alias + ".startTime >= ?', d1));\n");
    }
    if (startTimeTo != null) {
      sb.append("var d2 = parseDate('" + JspLib.format(startTimeTo, FormatSettings.SDFyMdHms)
          + "');");
      sb.append("sce.append(RSCE.cond('" + alias + ".startTime < ?', d2));\n");
    }
    sb.append("if (isDefined(sce.parameters))\n");
    sb.append("  " + qryName + ".setWhere(sce);\n");
    return sb.toString();
  }

  public String getQdNameLike() {
    return qdNameLike;
  }

  public void setQdNameLike(String qdNameLike) {
    this.qdNameLike = qdNameLike;
  }

  public Date getStartTimeFrom() {
    return startTimeFrom;
  }

  public void setStartTimeFrom(Date startTimeFrom) {
    this.startTimeFrom = startTimeFrom;
  }

  public Date getStartTimeTo() {
    return startTimeTo;
  }

  public void setStartTimeTo(Date startTimeTo) {
    this.startTimeTo = startTimeTo;
  }

  public String getState() {
    return state;
  }

  public void setState(String state) {
    this.state = state;
  }

  public String getUserCodeLike() {
    return userCodeLike;
  }

  public void setUserCodeLike(String userCodeLike) {
    this.userCodeLike = userCodeLike;
  }

}
